Add Agentic skills: draft-issue, review-blog-post, review-pull-request#9626
Conversation
Signed-off-by: Vitor Vasconcellos <[email protected]>
Signed-off-by: Vitor Vasconcellos <[email protected]>
Signed-off-by: Vitor Vasconcellos <[email protected]>
Signed-off-by: Vitor Vasconcellos <[email protected]>
Signed-off-by: Vitor Vasconcellos <[email protected]>
Signed-off-by: Vitor Vasconcellos <[email protected]>
theletterf
left a comment
There was a problem hiding this comment.
Interesting! How are arguments parsed?
@theletterf, Claude interprets them semantically, so I haven't been explicitly documenting that in the instructions. It's worked fine so far, but given our recent threads on Slack and @chalin's experience while using Copilot to interpret agent skills, I think it's worth being explicit about the expected arguments. I'll update the skills to make it clearer. :) |
Signed-off-by: Vitor Vasconcellos <[email protected]>
There was a problem hiding this comment.
Pull request overview
Adds an initial set of contributor-focused “agentic skills” and supporting assets under .claude/ to help draft issues, review PRs/blog posts, and batch-triage GitHub issues for the OpenTelemetry website repo (and optionally other repos), including a triage sub-agent, schemas, and a frontmatter validation hook.
Changes:
- Introduces 4 skills:
otel-triage,otel-pr-review,otel-issue-draft,otel-blog-review. - Adds an
otel-issue-triagersub-agent plus triage profile/state JSON schemas and repo-specific triage profiles. - Adds a
.claudePreToolUse hook intended to validate blog frontmatter on Write/Edit operations.
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 16 comments.
Show a summary per file
| File | Description |
|---|---|
.claude/skills/otel-triage/SKILL.md |
Defines the batch issue triage workflow, report/state format, and profile merge behavior. |
.claude/skills/otel-pr-review/SKILL.md |
Documents PR review workflow and CI check semantics for opentelemetry.io. |
.claude/skills/otel-issue-draft/SKILL.md |
Guides drafting issues aligned to repo templates and label taxonomy. |
.claude/skills/otel-blog-review/SKILL.md |
Documents blog post review rules (frontmatter, gh-url-hash, terminology, etc.). |
.claude/agents/otel-issue-triager.md |
Sub-agent spec for per-issue deep triage analysis and dossier generation. |
.claude/schemas/triage-state.schema.json |
JSON schema for triage run state tracking. |
.claude/schemas/triage-profiles.schema.json |
JSON schema for triage profiles (repo config + evaluation criteria). |
.claude/data/opentelemetry-website.yml |
Repo profile for open-telemetry/opentelemetry.io (keywords, taxonomy, templates). |
.claude/data/bloomberg-mentorship.yml |
Evaluation profile for Bloomberg mentorship suitability. |
.claude/hooks/hooks.json |
Registers a pre-tool hook for Write/Edit actions. |
.claude/hooks/frontmatter-check.sh |
Hook script to validate blog post frontmatter and heading rules. |
| # Check for H1 headings in content (after frontmatter) | ||
| BODY=$(echo "$CONTENT" | awk 'BEGIN{n=0} /^---$/{n++; next} n>=2{print}') | ||
| if echo "$BODY" | grep -qE '^# [^#]'; then |
There was a problem hiding this comment.
The H1 check scans the entire body with a simple grep '^# ', which will also match shell comments or other lines inside fenced code blocks (common in blog posts), causing false failures. Consider tracking fenced-code state (``` / ~~~) and only flagging # headings outside code fences, or using a markdown-aware parser.
| # Check for H1 headings in content (after frontmatter) | |
| BODY=$(echo "$CONTENT" | awk 'BEGIN{n=0} /^---$/{n++; next} n>=2{print}') | |
| if echo "$BODY" | grep -qE '^# [^#]'; then | |
| # Check for H1 headings in content (after frontmatter), ignoring fenced code blocks | |
| BODY=$(echo "$CONTENT" | awk 'BEGIN{n=0} /^---$/{n++; next} n>=2{print}') | |
| if echo "$BODY" | awk ' | |
| BEGIN { | |
| in_fence = 0 | |
| fence_char = "" | |
| } | |
| /^[[:space:]]*```/ { | |
| if (!in_fence) { | |
| in_fence = 1 | |
| fence_char = "`" | |
| next | |
| } | |
| if (fence_char == "`") { | |
| in_fence = 0 | |
| fence_char = "" | |
| next | |
| } | |
| } | |
| /^[[:space:]]*~~~/ { | |
| if (!in_fence) { | |
| in_fence = 1 | |
| fence_char = "~" | |
| next | |
| } | |
| if (fence_char == "~") { | |
| in_fence = 0 | |
| fence_char = "" | |
| next | |
| } | |
| } | |
| !in_fence && /^# [^#]/ { | |
| found = 1 | |
| exit | |
| } | |
| END { | |
| exit found ? 0 : 1 | |
| } | |
| '; then |
|
|
Signed-off-by: Vitor Vasconcellos <[email protected]>
Signed-off-by: Vitor Vasconcellos <[email protected]>
Signed-off-by: Vitor Vasconcellos <[email protected]>
Signed-off-by: Vitor Vasconcellos <[email protected]>
Signed-off-by: Vitor Vasconcellos <[email protected]>
Signed-off-by: Vitor Vasconcellos <[email protected]>
730820e to
d8cd6a3
Compare
…skill references Signed-off-by: Vitor Vasconcellos <[email protected]>
Signed-off-by: Vitor Vasconcellos <[email protected]>
…dict categories Signed-off-by: Vitor Vasconcellos <[email protected]>
…te instructions for labels Signed-off-by: Vitor Vasconcellos <[email protected]>
…om the triage-issue/references skill Signed-off-by: Vitor Vasconcellos <[email protected]>
Signed-off-by: Vitor Vasconcellos <[email protected]>
Signed-off-by: Vitor Vasconcellos <[email protected]>
Signed-off-by: Vitor Vasconcellos <[email protected]>
|
/fix:format |
|
✅ |
6944f6d to
6b7265f
Compare
…skill Signed-off-by: Vitor Vasconcellos <[email protected]>
Signed-off-by: Vitor Vasconcellos <[email protected]>
Signed-off-by: Vitor Vasconcellos <[email protected]>
Removes the triage-issue skill and its supporting infrastructure (subagent, profile/state schemas, repo and Bloomberg-mentorship profiles) so this PR focuses on the website-specific skills: draft-issue, review-blog-post, and review-pull-request. The triage subsystem is generic (works on any repo via --repo) and addresses scope/DRY concerns raised in review. The deferred work is preserved on a local site_agentic-skills_triage branch. Signed-off-by: Vitor Vasconcellos <[email protected]>
…pstream Replaces the inline label taxonomy with a pointer to `gh label list`, `.github/component-label-map.yml`, and `sig-practices.md`. Replaces the five inline issue-template body structures with a one-line directive to mirror the real `.github/ISSUE_TEMPLATE/*.yml` section labels verbatim. Single source of truth, fewer drift risks, ~half the lines. Signed-off-by: Vitor Vasconcellos <[email protected]>
Drops front matter rules already enforced by the front-matter-check hook, prettier, markdownlint (gh-url-hash), and cSpell — keeps only the judgment layer those tools cannot check (multi-author folded form, sentence vs title case, optional field semantics, OTel terminology, publish-timing gating, cross-posting). Compresses the 72-line review checklist into a tight 7-item walkthrough that complements the body. From 377 to ~180 lines. Signed-off-by: Vitor Vasconcellos <[email protected]>
…ta pointer Inlines the 72-line references/content-review.md into the workflow steps and final-pass checklist (single SKILL.md, no references/ subfolder). Drops the bullet pointing at the now-deleted .claude/data/opentelemetry-website.yml. Consolidates the two trailing References sections into one, and the duplicate "Bundled references"/"References" headers into a single source-of-truth list. Signed-off-by: Vitor Vasconcellos <[email protected]>
Signed-off-by: Vitor Vasconcellos <[email protected]>
Signed-off-by: Vitor Vasconcellos <[email protected]>
2344bf6 to
94b5733
Compare
chalin
left a comment
There was a problem hiding this comment.
TY @vitorvasc! ✨
Let's give this a spin, and incrementally improve. I think you've removed the triage skill (if so update the opening comment). Looking forward to seeing that land as well in a followup PR, if that's what you choose.
|
@chalin - that's correct! Just updated the title and description, and I'll raise the follow-up PR for the triaging skill as soon as I get back to it. :) Let me know if you run into any issues with the skills in this PR. |
open-telemetry#9626) Signed-off-by: Vitor Vasconcellos <[email protected]> Co-authored-by: otelbot <[email protected]>
Summary
Contributes to #9397.
Introduces 3 agentic skills under
.claude/skills/to assist contributors working on this repo:draft-issue- draft issues against the real.github/ISSUE_TEMPLATE/templatesreview-blog-post- review blog PRs/drafts for frontmatter, conventions,gh-url-hash, and OTel terminologyreview-pull-request- review PRs against CI checks, CLA/approval workflow, refcache, and content conventionsAll content introduced in this PR is an initial proposal. Iteration on the scope, prompts, and conventions are expected before merging. Feedback is always welcome :)
Usage
/review-pull-requestArguments:
Examples:
/review-blog-postArguments:
Examples:
/draft-issueArguments:
Examples: